﻿using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace FindLinkForum
{
    public class RequestHandle
    {

        /// <summary>
        /// Lấy tất cả các link của từng chủ đề trên diễn đàn :D
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static List<ForumItem> GetAllLinkForumByWebsite(string url)
        {
            List<ForumItem> results = new List<ForumItem>();
            try
            {
                var site = new HtmlWeb();
                var doc = site.Load(url);
                // lấy tất cả link trong trang web
                HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@href]");
                if (nodes != null)
                {
                    foreach (var node in nodes)
                    {
                        if (node == null)
                            continue;
                        string strTitle = node.InnerText;
                        string strLink = node.Attributes["href"].Value.Trim();
                        if (strTitle != "" && strLink != "")
                        {
                            ForumItem item = new ForumItem();
                            item.NameForum = strTitle;
                            item.LinkForum = strLink;
                            item.LinkWebsite = url;

                            results.Add(item);
                        }
                    }
                }
            }
            catch
            {
                return null;
            }
            return results;
        }

        /// <summary>
        /// Kiểm tra link có tồn tại
        /// </summary>
        /// <param name="url">url</param>
        /// <returns></returns>
        public static bool CheckUrlConnected(string url)
        {
            try
            {
                Uri urlCheck = new Uri(url);
                //Creating the HttpWebRequest
                HttpWebRequest request = WebRequest.Create(urlCheck) as HttpWebRequest;
                //Setting the Request method HEAD, you can also use GET too.
                request.Method = WebRequestMethods.Http.Get;
                //set timeout
                request.Timeout = 5000;
                //Getting the Web Response.
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                //Returns TRUE if the Status code == 200
                //MessageBox.Show(response.StatusCode.ToString());
                if (response.StatusCode == HttpStatusCode.OK)
                    return true;
                return false;
            }
            catch
            {
                //Any exception will returns false.
                return false;
            }
        }

        /// <summary>
        /// So sánh danh sách các key với 1 chuổi 
        /// </summary>
        /// <param name="str">chuổi so sánh</param>
        /// <param name="keys">các từ khóa cần so sánh</param>
        /// <param name="kq">từ khóa đúng nhất</param>
        /// <returns></returns>
        private static bool CompareStringWithKeys(string str, string[] keys, ref string kq)
        {
            for (int i = 0; i < keys.Length; i++)
            {
                if (str.ToLower().Trim().IndexOf(keys[i].ToLower().Trim()) != -1)
                {
                    // kq = keys[i];
                    return true;
                }
            }
            return false;
        }
    }
}
